perm filename SEARCH.LSP[206,JMC] blob sn#070520 filedate 1973-11-03 generic text, type T, neo UTF8
(SETQ SEARCHFNS @(
SEARCH
SEARCHLIS
ALLSOL1
ALLSOL
ALLSOLA
ALLSOLB
))

(DE SEARCH (P) (COND ((LOSE P) @LOSE) ((TER P) P) (T (SEARCHLIS (SUCCESSORS P)))))

(DE SEARCHLIS (U) (COND ((NULL U) @LOSE) (T ((LAMBDA (X) (COND ((EQ X @LOSE)
(SEARCHLIS (CDR U))) (T X))) (SEARCH (CAR U))))))

(DE ALLSOL1 (P) (COND ((LOSE P) NIL)
		((TER P) (LIST P))
		(T (MAPAPP (FUNCTION ALLSOL1) (SUCCESSORS P)))))

(DE ALLSOL (P) (ALLSOLA P NIL))

(DE ALLSOLA (P FOUND) (COND
	((LOSE P) FOUND)
	((TER P) (CONS P FOUND))
	(T (ALLSOLB (SUCCESSORS P) FOUND))))

(DE ALLSOLB (U FOUND) (COND
	((NULL U) FOUND)
	(T (ALLSOLB (CDR U) (ALLSOLA (CAR U) FOUND)))))